home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / cchasm.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  8KB  |  265 lines

  1. /*
  2.  * Cosmic Chasm driver
  3.  *
  4.  * Jul 15 1999 by Mathis Rosenhauer
  5.  *
  6.  */
  7.  
  8. #include "driver.h"
  9. #include "vidhrdw/vector.h"
  10. #include "machine/z80fmly.h"
  11.  
  12. /* from machine/cchasm.c */
  13. READ_HANDLER( cchasm_6840_r );
  14. WRITE_HANDLER( cchasm_6840_w );
  15. WRITE_HANDLER( cchasm_led_w );
  16. WRITE_HANDLER( cchasm_watchdog_w );
  17.  
  18. /* from vidhrdw/cchasm.c */
  19. WRITE_HANDLER( cchasm_refresh_control_w );
  20. void cchasm_init_colors (unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  21. int cchasm_vh_start (void);
  22. void cchasm_vh_stop (void);
  23.  
  24. extern UINT8 *cchasm_ram;
  25.  
  26. /* from sndhrdw/cchasm.c */
  27. WRITE_HANDLER( cchasm_io_w );
  28. READ_HANDLER( cchasm_io_r );
  29. READ_HANDLER( cchasm_snd_io_r );
  30. WRITE_HANDLER( cchasm_snd_io_w );
  31. int cchasm_sh_start(const struct MachineSound *msound);
  32. void cchasm_sh_update(void);
  33.  
  34. static struct MemoryReadAddress readmem[] =
  35. {
  36.     { 0x000000, 0x00ffff, MRA_ROM },
  37.     { 0x040000, 0x04000f, cchasm_6840_r },
  38.     { 0x060000, 0x060001, input_port_0_r },
  39.     { 0xf80000, 0xf800ff, cchasm_io_r },
  40.     { 0xffb000, 0xffffff, MRA_BANK1 },
  41.     { -1 }    /* end of table */
  42. };
  43.  
  44. static struct MemoryWriteAddress writemem[] =
  45. {
  46.     { 0x000000, 0x00ffff, MWA_ROM },
  47.     { 0x040000, 0x04000f, cchasm_6840_w },
  48.     { 0x050000, 0x050001, cchasm_refresh_control_w },
  49.     { 0x060000, 0x060001, cchasm_led_w },
  50.     { 0x070000, 0x070001, cchasm_watchdog_w },
  51.     { 0xf80000, 0xf800ff, cchasm_io_w },
  52.     { 0xffb000, 0xffffff, MWA_BANK1, &cchasm_ram },
  53.     { -1 }    /* end of table */
  54. };
  55.  
  56. static struct MemoryReadAddress sound_readmem[] =
  57. {
  58.     { 0x0000, 0x0fff, MRA_ROM },
  59.     { 0x4000, 0x43ff, MRA_RAM },
  60.     { 0x5000, 0x53ff, MRA_RAM },
  61.     { 0x6000, 0x6fff, cchasm_snd_io_r },
  62.     { -1 }    /* end of table */
  63. };
  64.  
  65. static struct MemoryWriteAddress sound_writemem[] =
  66. {
  67.     { 0x0000, 0x0fff, MWA_ROM },
  68.     { 0x4000, 0x43ff, MWA_RAM },
  69.     { 0x5000, 0x53ff, MWA_RAM },
  70.     { 0x6000, 0x6fff, cchasm_snd_io_w },
  71.     { -1 }    /* end of table */
  72. };
  73.  
  74. static struct IOReadPort sound_readport[] =
  75. {
  76.     { 0x00, 0x03, z80ctc_0_r },
  77.     { -1 }    /* end of table */
  78. };
  79.  
  80. static struct IOWritePort sound_writeport[] =
  81. {
  82.     { 0x00, 0x03, z80ctc_0_w },
  83.     { -1 }    /* end of table */
  84. };
  85.  
  86.  
  87. INPUT_PORTS_START( cchasm )
  88.     PORT_START /* DSW */
  89.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )
  90.     PORT_DIPSETTING(    0x01, "3" )
  91.     PORT_DIPSETTING(    0x00, "5" )
  92.     PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) )
  93.     PORT_DIPSETTING(    0x06, "40000" )
  94.     PORT_DIPSETTING(    0x04, "60000" )
  95.     PORT_DIPSETTING(    0x02, "80000" )
  96.     PORT_DIPSETTING(    0x00, "100000" )
  97.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Difficulty ) )
  98.     PORT_DIPSETTING(    0x00, "Easy" )
  99.     PORT_DIPSETTING(    0x08, "Hard" )
  100.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) )
  101.     PORT_DIPSETTING(    0x00, "Once" )
  102.     PORT_DIPSETTING(    0x10, "Every" )
  103.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) )
  104.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  105.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  106.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Coinage ) )
  107.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
  108.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_1C ) )
  109.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  110.  
  111.     PORT_START /* IN1 */
  112.     PORT_ANALOG( 0xff, 0, IPT_DIAL, 100, 10, 0, 0)
  113.  
  114.     PORT_START /* IN2 */
  115.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
  116.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
  117.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 )
  118.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 )
  119.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
  120.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
  121.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
  122.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  123.  
  124.     PORT_START /* IN3 */
  125.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
  126.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
  127.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
  128.     PORT_BITX(0x01, IP_ACTIVE_LOW, 0, "Test 1", KEYCODE_F1, IP_JOY_NONE )
  129.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) /* Test 2, not used in cchasm */
  130.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) /* Test 3, not used in cchasm */
  131. INPUT_PORTS_END
  132.  
  133.  
  134.  
  135. static struct AY8910interface ay8910_interface =
  136. {
  137.     2,    /* 2 chips */
  138.     1818182,    /* 1.82 MHz */
  139.     { 20, 20 },
  140.     { 0, 0 },
  141.     { 0, 0 },
  142.     { 0, 0 },
  143.     { 0, 0 }
  144. };
  145.  
  146. static struct CustomSound_interface custom_interface =
  147. {
  148.     cchasm_sh_start,
  149.     0,
  150.     cchasm_sh_update
  151. };
  152.  
  153. static Z80_DaisyChain daisy_chain[] =
  154. {
  155.     { z80ctc_reset, z80ctc_interrupt, z80ctc_reti, 0 }, /* CTC number 0 */
  156.     { 0,0,0,-1}         /* end mark */
  157. };
  158.  
  159. static struct MachineDriver machine_driver_cchasm =
  160. {
  161.     /* basic machine hardware */
  162.     {
  163.         {
  164.             CPU_M68000,
  165.             8000000, /* 8 MHz (from schematics) */
  166.             readmem, writemem,0,0,
  167.             0,0
  168.         },
  169.         {
  170.             CPU_Z80,
  171.             3584229,    /* 3.58  MHz (from schematics) */
  172.             sound_readmem,sound_writemem,sound_readport,sound_writeport,
  173.             0,0,
  174.             0,0,daisy_chain
  175.         }
  176.     },
  177.     40, 0,    /* frames per second, vblank duration (vector game, so no vblank) */
  178.     1,
  179.     0,
  180.  
  181.     /* video hardware */
  182.     400, 300, { 0, 1024-1, 0, 768-1 },
  183.     0,
  184.     256, 256,
  185.     cchasm_init_colors,
  186.  
  187.     VIDEO_TYPE_VECTOR,
  188.     0,
  189.     cchasm_vh_start,
  190.     cchasm_vh_stop,
  191.     vector_vh_update,
  192.  
  193.     /* sound hardware */
  194.     0,0,0,0,
  195.     {
  196.         {
  197.             SOUND_AY8910,
  198.             &ay8910_interface
  199.         },
  200.         {
  201.             SOUND_CUSTOM,
  202.             &custom_interface
  203.         }
  204.     }
  205. };
  206.  
  207.  
  208.  
  209. /***************************************************************************
  210.  
  211.   Game driver(s)
  212.  
  213. ***************************************************************************/
  214.  
  215. ROM_START( cchasm )
  216.     ROM_REGION( 0x010000, REGION_CPU1 )
  217.     ROM_LOAD_EVEN( "chasm.u4",  0x000000, 0x001000, 0x19244f25 )
  218.     ROM_LOAD_ODD ( "chasm.u12", 0x000000, 0x001000, 0x5d702c7d )
  219.     ROM_LOAD_EVEN( "chasm.u8",  0x002000, 0x001000, 0x56a7ce8a )
  220.     ROM_LOAD_ODD ( "chasm.u16", 0x002000, 0x001000, 0x2e192db0 )
  221.     ROM_LOAD_EVEN( "chasm.u3",  0x004000, 0x001000, 0x9c71c600 )
  222.     ROM_LOAD_ODD ( "chasm.u11",  0x004000, 0x001000, 0xa4eb59a5 )
  223.     ROM_LOAD_EVEN( "chasm.u7",  0x006000, 0x001000, 0x8308dd6e )
  224.     ROM_LOAD_ODD ( "chasm.u15", 0x006000, 0x001000, 0x9d3abf97 )
  225.     ROM_LOAD_EVEN( "u2",        0x008000, 0x001000, 0x4e076ae7 )
  226.     ROM_LOAD_ODD ( "u10",       0x008000, 0x001000, 0xcc9e19ca )
  227.     ROM_LOAD_EVEN( "chasm.u6",  0x00a000, 0x001000, 0xa96525d2 )
  228.     ROM_LOAD_ODD ( "chasm.u14", 0x00a000, 0x001000, 0x8e426628 )
  229.     ROM_LOAD_EVEN( "u1",        0x00c000, 0x001000, 0x88b71027 )
  230.     ROM_LOAD_ODD ( "chasm.u9",  0x00c000, 0x001000, 0xd90c9773 )
  231.     ROM_LOAD_EVEN( "chasm.u5",  0x00e000, 0x001000, 0xe4a58b7d )
  232.     ROM_LOAD_ODD ( "chasm.u13", 0x00e000, 0x001000, 0x877e849c )
  233.  
  234.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  235.     ROM_LOAD( "2732.bin", 0x0000, 0x1000, 0x715adc4a )
  236. ROM_END
  237.  
  238. ROM_START( cchasm1 )
  239.     ROM_REGION( 0x010000, REGION_CPU1 )
  240.     ROM_LOAD_EVEN( "chasm.u4",  0x000000, 0x001000, 0x19244f25 )
  241.     ROM_LOAD_ODD ( "chasm.u12", 0x000000, 0x001000, 0x5d702c7d )
  242.     ROM_LOAD_EVEN( "chasm.u8",  0x002000, 0x001000, 0x56a7ce8a )
  243.     ROM_LOAD_ODD ( "chasm.u16", 0x002000, 0x001000, 0x2e192db0 )
  244.     ROM_LOAD_EVEN( "chasm.u3",  0x004000, 0x001000, 0x9c71c600 )
  245.     ROM_LOAD_ODD ( "chasm.u11", 0x004000, 0x001000, 0xa4eb59a5 )
  246.     ROM_LOAD_EVEN( "chasm.u7",  0x006000, 0x001000, 0x8308dd6e )
  247.     ROM_LOAD_ODD ( "chasm.u15", 0x006000, 0x001000, 0x9d3abf97 )
  248.     ROM_LOAD_EVEN( "chasm.u2",  0x008000, 0x001000, 0x008b26ef )
  249.     ROM_LOAD_ODD ( "chasm.u10", 0x008000, 0x001000, 0xc2c532a3 )
  250.     ROM_LOAD_EVEN( "chasm.u6",  0x00a000, 0x001000, 0xa96525d2 )
  251.     ROM_LOAD_ODD ( "chasm.u14", 0x00a000, 0x001000, 0x8e426628 )
  252.     ROM_LOAD_EVEN( "chasm.u1",  0x00c000, 0x001000, 0xe02293f8 )
  253.     ROM_LOAD_ODD ( "chasm.u9",  0x00c000, 0x001000, 0xd90c9773 )
  254.     ROM_LOAD_EVEN( "chasm.u5",  0x00e000, 0x001000, 0xe4a58b7d )
  255.     ROM_LOAD_ODD ( "chasm.u13", 0x00e000, 0x001000, 0x877e849c )
  256.  
  257.     ROM_REGION( 0x1000, REGION_CPU2 )    /* 4k for the audio CPU */
  258.     ROM_LOAD( "2732.bin", 0x0000, 0x1000, 0x715adc4a )
  259. ROM_END
  260.  
  261.  
  262.  
  263. GAME( 1983, cchasm,  0,      cchasm, cchasm, 0, ROT270, "Cinematronics / GCE", "Cosmic Chasm (set 1)" )
  264. GAME( 1983, cchasm1, cchasm, cchasm, cchasm, 0, ROT270, "Cinematronics / GCE", "Cosmic Chasm (set 2)" )
  265.